package Controlador;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import model.Roles;
import model.UsuarioOnline;
import model.UsuarioRol;
import DAO.RolesDAO;
import DAO.UsuarioDAO;
import DAO.UsuarioRolDAO;

@ManagedBean
public class AsignarRolesBean 
{
	@Inject
	RolesDAO rd;
	@Inject
	UsuarioDAO ud;
	@Inject
	UsuarioRolDAO usrd;

	ArrayList<UsuarioOnline> usuarios=new ArrayList<UsuarioOnline>();
	ArrayList<Roles> roles=new ArrayList<Roles>();
	
	UsuarioOnline useleccionado=null;
	Roles rolseleccionado=null;	
	
	UsuarioRol urol = new UsuarioRol();
	
	
	@PostConstruct
	public void cargarDatos()
	{
		roles=rd.listar();
		usuarios =ud.listar();
	}
	
	public UsuarioOnline getUseleccionado() {return useleccionado;}
	public void setUseleccionado(UsuarioOnline useleccionado) {	this.useleccionado = useleccionado;	}

	public Roles getRolseleccionado() {	return rolseleccionado;	}
	public void setRolseleccionado(Roles rolseleccionado) {	this.rolseleccionado = rolseleccionado;	}

	public ArrayList<UsuarioOnline> getUsuarios() {	return usuarios;}
	public void setUsuarios(ArrayList<UsuarioOnline> usuarios) {this.usuarios = usuarios;}

	public ArrayList<Roles> getRoles() {return roles;}
	public void setRoles(ArrayList<Roles> roles) {	this.roles = roles;}
	
	
	public String asignar()
	{
		System.out.println("usr: "+useleccionado.getUsrLogin()+" rolSelect: "+rolseleccionado.getRolDescripcion());

        FacesContext ctx = FacesContext.getCurrentInstance();
        List<UsuarioRol> usrol=ud.verRolesUsuario(useleccionado.getUsrLogin());
        List<String> roles=new ArrayList<String>();
        for(UsuarioRol ur:usrol)  	roles.add(ur.getRol().getRolDescripcion());
        if(!roles.contains(rolseleccionado.getRolDescripcion()))
        {
			urol.setRol(rolseleccionado);
			urol.setUsuarioOnline(useleccionado);
			usrd.insertar(urol);
            ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Sistema", "Asignacion Exitosa"));                                             

        }
        else
            ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Sistema", "El rol " + rolseleccionado.getRolDescripcion() + " ya esta asignado a "+useleccionado.getUsrLogin()));                                             

		return null;
	}		
}
